package com.example.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.example.entity.*;
import com.example.utils.PageResult;
import com.example.vo.CollectVO;
import com.example.vo.VideoDatabaseVO;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CollectService extends IService<Collect> {
//    Page<Collect> selectCollectPage(Page<Collect> page);

    /**
     * 收藏列表
     * @param userId
     * @return
     */
    List<CollectVO> selectCollectList(@Param("userId") Integer userId);


    /**
     * 收藏列表
     * @param majorId
     * @return
     */
    List<VideoDatabaseVO> selectVideoDatabase(@Param("majorId") Integer majorId);

    /**
     * 课程收藏
     * @param courseId
     * @return
     */
    Integer collectCourse(@Param("courseId") Integer courseId);

    /**
     * 后台显示所有的收藏信息
     * @return
     */
    List<CollectVO> selectAll();

    /**
     * 后台修改用户收藏信息
     * @param nickName
     * @param majorName
     * @param unitName
     * @param courseName
     * @param picUrl
     * @return
     */
    Integer modifyCollect(Integer id,
                          String nickName,
                          String majorName,
                          String unitName,
                          String courseName,
                          String picUrl);


    /**
     * 后台收藏列表(分页)
     * @return
     */
    List<CollectVO> selectCollectPage(String courseName,Integer page,Integer limit);

    PageResult<List<CollectVO>> queryUserByPage(
            String courseName,
            @Param("page") Integer page,
            @Param("limit") Integer limit);

    /**
     * 假删除
     * @return
     */
    Integer deleteCollect(Integer id);


    List<Major> selectMajorById();

    List<User> selectUser();

    List<Unit> selectUnitById(Integer majorId);

    List<Course> selectCourseById(Integer unitId);

    PageResult<List<CollectVO>> selectByCourseId(Integer majorId,Integer unitId,Integer courseId,Integer userId, Integer page, Integer limit);

    List<Unit> selectAllUnit();

    List<Course> selectAllCourse();
}
